(function() {
    var ns = window.py.Figures || {};

    ns.Ray = function (params) {
        ns.Figures.call(this, params);
        this.setType('Ray');

        var ray = this;

        this.getDirectionVector = Helper.abstractMethod();
        this.getAnchor = Helper.abstractMethod();

        this.drawFunc = function(viewPort) {

        }
    };

    ns.Ray2Point = function (params) {
        ns.Ray.call(this, params);
        this.setType('Ray2Point');

        var ray = this,
            anchor = params.anchor,
            goThrough = params.point;

        var _vector = new ns.Figures.Vector2Point({head:anchor, tail:goThrough});

        this.setAnchor = function (point) {
            anchor = point;
            _vector.setHead(point);
        };

        this.setThroughPoint = function (point) {
            goThrough = point;
            _vector.setTail(point);
        };

        this.getAnchor = function () {
            return anchor;
        };

        this.getDirectionVector = function () {
            return _vector;
        };

    };

    window.py.Figures = Helper.extend(window.py.Figures, ns);
})();